#pragma once

#include "typedef.h"

interface IObject;
typedef vresult	(*CreateObjectFuncPtr)(vclsid clsID,IObject** ppObject);

SYS_API vresult LoadComponent(const wchar_t* modulePath);
SYS_API void UnloadComponent(const wchar_t* modulePath);

SYS_API vresult LoadAllComponents(const wchar_t* inifilename);
SYS_API void UnloadAllComponents();

SYS_API void RegisterCreator(vclsid clsid,CreateObjectFuncPtr func);
SYS_API vresult CreateObject(vclsid clsID,IObject** ppObject);

SYS_API IObject* LoadAddin(const wchar_t* modulePath);
SYS_API void UnloadAddin(const wchar_t* modulePath);

#ifndef SYS_DLL
	#pragma comment(lib,"System.lib")
#endif